<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //         士兵张三有一把M416
        // 枪能够装填子弹
        // 枪能够发射子弹
        // 如果士兵没有枪，无法开火
        // 如果枪里没有子弹，需要装填子弹
        // 如果有枪又有子弹，则可以开火

        // 士兵类 
        //        属性 
        //    名字
        //    枪
        //        方法 
        //    开火 (扣动扳机)
        //  枪类
        //         属性
        //    类型
        //    子弹
        //          方法:
        //    装填子弹 
        //     发射出去 

        class Solider {
            constructor(name) {
                this.name = name;
                this.gun = null;
            }

            fire(num) {
                // 判断有没有枪 
                if (this.gun === null) {
                    alert('小伙子先申请配一把枪');
                    return;
                }
                //枪中有没有子弹
                this.gun.add_bullet(num);
                this.gun.shoot();
            }
        }

        class Gun {
            constructor(type) {
                this.type = type;
                this.bullet_count = 0;
            }

            add_bullet(count) {
                this.bullet_count += count;
            }

            shoot() {
                if (this.bullet_count <= 0) {
                    alert('没子弹了');
                    return;
                }
                this.bullet_count -= 1;
            }


        }

        const g1 = new Gun('98k'); //枪
        const s1 = new Solider('张三'); // 士兵
        s1.gun = g1;
        s1.fire(5);
        s1.fire(5);
        console.log(`士兵${s1.name}正在用${g1.type}开火,最后剩余子弹${g1.bullet_count}`);



    </script>
</body>

</html>